As semiconductor processing reaches its limits, it becomes more difficult to get more performance from complicated processing circuits, such as microprocessors. Instead of making more complicated chips, it has been suggested to put multiple processing cores on a single chip. Therefore, rather than providing one processor which can operate more quickly, the processing tasks would be allocated among multiple cores on a single chip.
For example, by putting four cores on a chip, a suitably written program, that is one whose instructions can be executed independent of one another, could execute the program four times as fast.
A single chip could have 4, 16, 256, or any number of cores thereon. Each of the cores can be a relatively simple processor, but the large number of these cores enables computations of various types can be carried out more quickly.
Other systems may provide multiple cores on different substrates.
The tasks for the multiple cores are allocated between the cores. Typically, either one of the cores operates to allocate the tasks, or a separate dedicated device, either on or off chip, allocates those tasks. The work is divided up to make sure that all cores always have enough work to keep them busy.